#define __QYQ_MODULE_LED_C_
#include "qyq_module_led.h"

int8_t qyq_module_led_init(struct qyq_module_led_type *this)
{
    if (this == null)
    {
        return -1;
    }

    this->qyq_module_led_config->qyq_module_led_write_status(this->qyq_module_led_config->qyq_module_led_status);
    this->qyq_module_led_config->qyq_module_led_write_brightness(this->qyq_module_led_config->qyq_module_led_brightness);

    return 0;
}

int8_t qyq_module_led_on(struct qyq_module_led_type *this) // 打开LED灯
{
    if (this == null)
    {
        return -1;
    }

    this->qyq_module_led_config->qyq_module_led_status = 1;
    this->qyq_module_led_config->qyq_module_led_write_status(this->qyq_module_led_config->qyq_module_led_status);

    return 0;
}

int8_t qyq_module_led_off(struct qyq_module_led_type *this) // 关闭LED灯
{
    if (this == null)
    {
        return -1;
    }

    this->qyq_module_led_config->qyq_module_led_status = 0;
    this->qyq_module_led_config->qyq_module_led_write_status(this->qyq_module_led_config->qyq_module_led_status);

    return 0;
}

int8_t qyq_module_led_get_brightness(struct qyq_module_led_type *this, uint8_t *brightness) // 获取亮度
{
    if (this == null)
    {
        return -1;
    }
    if (brightness == null)
    {
        return -1;
    }

    *brightness = this->qyq_module_led_config->qyq_module_led_brightness;

    return 0;
}

int8_t qyq_module_led_set_brightness(struct qyq_module_led_type *this, uint8_t brightness) // 设置亮度
{
    if (this == null)
    {
        return -1;
    }

    this->qyq_module_led_config->qyq_module_led_brightness = brightness;
    this->qyq_module_led_config->qyq_module_led_write_brightness(this->qyq_module_led_config->qyq_module_led_brightness);

    return 0;
}

int8_t qyq_module_led_get_status(struct qyq_module_led_type *this, uint8_t *status)
{
    if (this == null)
    {
        return -1;
    }
    if (status == null)
    {
        return -1;
    }

    *status = this->qyq_module_led_config->qyq_module_led_status;

    return 0;
}

int8_t qyq_module_led_set_status(struct qyq_module_led_type *this, uint8_t status) // 设置状态
{
    if (this == null)
    {
        return -1;
    }

    this->qyq_module_led_config->qyq_module_led_status = status;
    this->qyq_module_led_config->qyq_module_led_write_status(this->qyq_module_led_config->qyq_module_led_status);

    return 0;
}

int8_t qyq_module_led_create(qyq_module_led_type_t *this, qyq_module_led_config_t *qyq_module_led_config)
{
    if (this == null)
    {
        return -1;
    }
    if (qyq_module_led_config == null)
    {
        return -1;
    }

    this->qyq_module_led_config = qyq_module_led_config;

    this->qyq_module_led_init = qyq_module_led_init;
    this->qyq_module_led_on = qyq_module_led_on;
    this->qyq_module_led_off = qyq_module_led_off;
    this->qyq_module_led_get_status = qyq_module_led_get_status;
    this->qyq_module_led_set_status = qyq_module_led_set_status;
    this->qyq_module_led_get_brightness = qyq_module_led_get_brightness;
    this->qyq_module_led_set_brightness = qyq_module_led_set_brightness;

    return 0;
}
